开发 AI 助手

系统已经为您准备了多种预设的 AI 助手模式,每种模式都针对不同的使用场景进行了优化。您可以根据具体需求选择合适的助手模式:

模式描述
自由模式直接与大模型对话,适用于各种通用场景
深度推理开启深度思考模式,AI 会展示详细的推理过程
业务联动将大模型与业务系统结合,处理特定业务场景
Chat2BI通过自然语言描述自动生成各种数据图表
MCP 服务调用 MCP(Model Context Protocol)服务扩展功能
文生脑图根据文字描述自动生成思维导图
AI助手模式选择界面

自定义开发助手

如果预设的助手模式无法满足您的特殊需求,您可以按照以下步骤开发自己的 AI 助手。

第一步:注册助手信息

首先需要在前端配置文件中注册您的助手信息。

配置文件位置

找到 gpt.ts 文件,在助手配置数组中添加新的助手信息

在 gpt.ts 中添加助手配置
{
  "id": "110",
  "name": "自定义模式",
  "description": "自定义测试",
  "placeholder": "请输入您的问题",
  "avatarUrl": "",
  "welcomeMsg": "自定义测试模式"
}
ID 命名建议

建议使用三位数字作为助手 ID,避免与系统预设助手冲突

第二步:实现助手业务逻辑

在后端创建助手的核心逻辑处理类。

1
创建助手类
com.pig4cloud.pigx.knowledge.support.rule 包下创建新的 Java 类
2
实现 ChatRule 接口
让您的类实现 ChatRule 接口,这是所有助手必须遵循的规范
3
编写处理逻辑
process 方法中实现您的具体业务逻辑
@Slf4j
@RequiredArgsConstructor
@Component("customChat")
public class CustomChatRule implements ChatRule {

  private final ModelProvider modelProvider;

  @SneakyThrows
  public Flux<AiMessageResultDTO> process(ChatMessageDTO chatMessageDTO) {
    // 获取流式助手服务
    AiStreamAssistantService streamAssistantService = modelProvider
      .getAiStreamAssistant(chatMessageDTO.getModelName())
      .getValue();

    // 调用大模型进行对话
    Flux<String> chatResponseFlux = streamAssistantService.chat(
      chatMessageDTO.getConversationId(),
      PromptBuilder.render("base-simple-system.st"),
      chatMessageDTO.getContent()
    );

    // 转换为标准格式并返回
    return chatResponseFlux.map(AiMessageResultDTO::new);
  }
}
组件名称唯一性

确保 @Component 注解中的名称(如 "customChat")是唯一的,它将作为助手的标识符

第三步:注册助手枚举

在系统枚举中注册您的助手,建立 ID 与实现类的映射关系。

com.pig4cloud.pigx.knowledge.support.constant.ChatTypeEnums 中添加:

public enum ChatTypeEnums {
  // ...其他已有的助手

  CUSTOM_CHAT(110L, "customChat"),
  // 110L 对应第一步中的 ID
  // "customChat" 对应第二步中的 @Component 名称
}
枚举作用说明

这个枚举建立了前端助手 ID 与后端实现类之间的映射关系,系统通过这个映射来找到对应的处理逻辑

第四步:测试您的助手

完成上述配置后,您就可以在界面中看到并测试您的自定义助手了。

自定义助手测试界面

高级功能:复杂助手开发

对于有经验的开发者,您可以在自定义助手中调用其他已有的功能模块。

调用自由聊天模式

如果您想在自定义助手中复用自由聊天的能力:

// 获取自由聊天处理器并调用
Flux<AiMessageResultDTO> resultDTOFlux = SpringUtil
  .getBean(SimpleChatRule.class)
  .process(chatMessageDTO);

调用知识库功能

让您的助手具备知识库检索能力:

// 设置要查询的知识库 ID
chatMessageDTO.setDatasetId(1L);

// 调用知识库助手
Flux<AiMessageResultDTO> resultDTOFlux = SpringUtil
  .getBean(VectorChatRule.class)
  .process(chatMessageDTO);

调用 MCP 服务

整合 MCP(Model Context Protocol)服务:

// 创建扩展配置
ChatMessageDTO.ExtDetails extDetails = new ChatMessageDTO.ExtDetails();
extDetails.setMcpId("your-mcp-service-id");
chatMessageDTO.setExtDetails(extDetails);

// 调用 MCP 助手
Flux<AiMessageResultDTO> resultDTOFlux = SpringUtil
  .getBean(McpChatRule.class)
  .process(chatMessageDTO);
查看可用服务

您可以在 MCP 管理界面中查看可用的 MCP 服务 ID

总结

通过以上步骤,您就可以创建属于自己的 AI 助手了。记住开发流程的三个关键步骤:

  1. 前端注册 - 在 gpt.ts 中添加助手信息
  2. 后端实现 - 创建 ChatRule 实现类
  3. 系统注册 - 在枚举中建立映射关系